/*
 * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */

package java.lang;

/** 
 * CharacterData 类封装了 Java.lang.Character 中的大型表格。
 * 此类专门处理 Unicode 未定义字符的字符数据。
 */

class CharacterDataUndefined extends CharacterData {

    /**
     * 获取指定字符的属性。
     * 对于未定义字符，返回 0（无特殊属性）。
     *
     * @param ch 字符代码点
     * @return 字符属性，未定义字符返回 0
     */
    int getProperties(int ch) {
        return 0;
    }

    /**
     * 获取指定字符的类型。
     * 未定义字符始终返回 UNASSIGNED（未分配）类型。
     *
     * @param ch 字符代码点
     * @return 始终返回 Character.UNASSIGNED
     */
    int getType(int ch) {
	return Character.UNASSIGNED;
    }

    /**
     * 判断指定字符是否可以作为 Java 标识符的起始字符。
     * 未定义字符不能作为 Java 标识符的起始字符。
     *
     * @param ch 字符代码点
     * @return 始终返回 false
     */
    boolean isJavaIdentifierStart(int ch) {
		return false;
    }

    /**
     * 判断指定字符是否可以作为 Java 标识符的组成部分。
     * 未定义字符不能作为 Java 标识符的组成部分。
     *
     * @param ch 字符代码点
     * @return 始终返回 false
     */
    boolean isJavaIdentifierPart(int ch) {
		return false;
    }

    /**
     * 判断指定字符是否可以作为 Unicode 标识符的起始字符。
     * 未定义字符不能作为 Unicode 标识符的起始字符。
     *
     * @param ch 字符代码点
     * @return 始终返回 false
     */
    boolean isUnicodeIdentifierStart(int ch) {
		return false;
    }

    /**
     * 判断指定字符是否可以作为 Unicode 标识符的组成部分。
     * 未定义字符不能作为 Unicode 标识符的组成部分。
     *
     * @param ch 字符代码点
     * @return 始终返回 false
     */
    boolean isUnicodeIdentifierPart(int ch) {
		return false;
    }

    /**
     * 判断指定字符是否为标识符中可忽略的字符。
     * 未定义字符不是可忽略的字符。
     *
     * @param ch 字符代码点
     * @return 始终返回 false
     */
    boolean isIdentifierIgnorable(int ch) {
		return false;
    }

    /**
     * 将指定字符转换为小写形式。
     * 未定义字符没有大小写概念，返回原字符。
     *
     * @param ch 字符代码点
     * @return 原字符代码点（无变化）
     */
    int toLowerCase(int ch) {
		return ch;
    }

    /**
     * 将指定字符转换为大写形式。
     * 未定义字符没有大小写概念，返回原字符。
     *
     * @param ch 字符代码点
     * @return 原字符代码点（无变化）
     */
    int toUpperCase(int ch) {
		return ch;
    }

    /**
     * 将指定字符转换为标题大小写形式。
     * 未定义字符没有大小写概念，返回原字符。
     *
     * @param ch 字符代码点
     * @return 原字符代码点（无变化）
     */
    int toTitleCase(int ch) {
		return ch;
    }

    /**
     * 返回指定字符在给定进制下的数字值。
     * 未定义字符不表示数字，返回 -1。
     *
     * @param ch 字符代码点
     * @param radix 进制（基数）
     * @return 始终返回 -1（不是数字）
     */
    int digit(int ch, int radix) {
		return -1;
    }

    /**
     * 返回指定字符的数值。
     * 未定义字符没有数值，返回 -1。
     *
     * @param ch 字符代码点
     * @return 始终返回 -1（无数值）
     */
    int getNumericValue(int ch) {
		return -1;
    }

    /**
     * 判断指定字符是否为空白字符。
     * 未定义字符不是空白字符。
     *
     * @param ch 字符代码点
     * @return 始终返回 false
     */
    boolean isWhitespace(int ch) {
		return false;
    }

    /**
     * 获取指定字符的方向性。
     * 未定义字符的方向性为 DIRECTIONALITY_UNDEFINED（未定义方向）。
     *
     * @param ch 字符代码点
     * @return 始终返回 Character.DIRECTIONALITY_UNDEFINED
     */
    byte getDirectionality(int ch) {
		return Character.DIRECTIONALITY_UNDEFINED;
    }

    /**
     * 判断指定字符是否为镜像字符。
     * 未定义字符不是镜像字符。
     *
     * @param ch 字符代码点
     * @return 始终返回 false
     */
    boolean isMirrored(int ch) {
		return false;
    }

    /** 未定义字符数据的单例实例 */
    static final CharacterData instance = new CharacterDataUndefined();
    
    /** 私有构造方法，防止外部实例化 */
    private CharacterDataUndefined() {};
}
